﻿Imports System.IO
Imports Scripting

Public Class Archivo
    Private rutaArchivo As String
    Private fso As New FileSystemObject

    Public Sub New(ByVal rutaArchivo As String)
        Me.rutaArchivo = rutaArchivo
    End Sub

    Public Sub escribirEnArchivo(ByVal texto As String, ByVal sobreEscribir As Boolean)
        My.Computer.FileSystem.WriteAllText(rutaArchivo, texto, Not sobreEscribir)
    End Sub

    'retornará el largo del archivo en bytes de mi clase y no recursivamente
    'Public Function sizeOf() As Long
    '    Dim fileInfo As FileInfo
    '    fileInfo = My.Computer.FileSystem.GetFileInfo(rutaArchivo)

    '    Return fileInfo.Length
    'End Function

    'en bytes
    Public Function size() As Long
        Dim s As Long = 0

        If Not Me.isFile Then
            Dim directorio As Folder
            directorio = fso.GetFolder(Me.rutaArchivo)
            Console.WriteLine("carpeta")
            'Console.WriteLine(directorio.Size)
            Return directorio.Size
        Else
            Dim archivo As Scripting.File
            archivo = fso.GetFile(Me.rutaArchivo)
            Console.WriteLine("archivo")
            'Console.WriteLine(archivo.Size)
            Return archivo.Size
        End If
        'Dim subDir As Folder

        'para recorrer un lista de archivos
        'For Each subDir In directorio.SubFolders
        '    'Console.Write(subDir.Name)
        '    'Console.WriteLine(" " & subDir.Size)
        '    size += subDir.Size
        'Next
    End Function

    Public Function getNombre() As String
        Return fso.GetBaseName(Me.rutaArchivo)
    End Function

    Public Function getPath() As String
        If Me.isFile Then
            Return fso.GetFile(Me.rutaArchivo).Path
        Else
            Return fso.GetFolder(Me.rutaArchivo).Path
        End If
    End Function

    'para usar esta funcion es necesario atrapar la exception desde donde 
    'la llamen con un catch a DirectoryNotFoundException
    Public Function getArchivoComoString() As String
        Throw New DirectoryNotFoundException
        Return My.Computer.FileSystem.ReadAllText(Me.rutaArchivo)
    End Function

    Private Function isFile() As Boolean
        Dim fso As New FileSystemObject
        Return fso.FileExists(Me.rutaArchivo)
    End Function
End Class
